#ifndef GDN_SPRITE_H
#define GDN_SPRITE_H

#include <SFML/Graphics.hpp>

#include "gdn/Image.h"
#include "gdn/Rectangle.h"

namespace gdn
{
	class Window;
	class RenderImage;

	class Sprite
	{
		public:
			void SetImage( Image& theImage );
			const Image& GetImage() const;


			void Move( float theX, float theY );
			void Move( const Vector2f& thePos );
			void SetPosition( float theX, float theY );
			void SetPosition( const Vector2f& thePos );
			Vector2f GetPosition() const;

			void SetRotation( float degrees );
			float GetRotation() const;

			void SetScale( float theX, float theY );
			void SetScale( const Vector2f& theScale );
			Vector2f GetScale() const;


			void SetSubRectangle( int theX, int theY, int theWidth, int theHeight );
			void SetSubRectangle( const Vector2i& thePos, const Vector2i& theSize );
			void SetSubRectangle( const Rectanglei& theRectangle );
			Rectanglei GetSubRectangle() const;

			void SetOrigin( float theX, float theY );
			void SetOrigin( const Vector2f& theOrigin );
			Vector2f GetOrigin() const;

		protected:
			sf::Sprite sprite;
			const Image* image;
			friend class Window;
			friend class RenderImage;
	};
}

#endif // GDN_SPRITE_H
